/**
 * 
 */
package uk.ac.manchester.cs.graph;

import java.util.Set;

/**
 * @author Pavel Klinov
 *
 * pklinov@cs.man.ac.uk, pklinov@clarkparsia.com
 * 
 * Feb 3, 2009
 */
public interface Graph<V, E> {

	public Set<V> getVertices();
	public Set<V> getAdjacentVertices(V vertex);
	public Set<Edge<V, E>> getIncidentEdges(V vertex);
	
	public void addVertex(V vertex);
	public void removeVertex(V vertex);
	
	public Edge<V, E> addEdge(E object, V start, V end);
	public void removeEdge(Edge<V, E> edge);
	
	public Edge<V, E> findEdge(V start, V end);
	public boolean isDirected();
}
